﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using FastDATA;

namespace CursoUNICEUB
{
    public partial class CalendarioCadastro : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["aluno"] == null)
                    Util.showMessage(this, "Usuario Não Logado", "../Account/Login.aspx?lastpage=CalendarioCadastro.aspx?Codigo=" + Request.QueryString["codigo"]);
                else
                {
                    DEAluno aluno = (DEAluno)Session["aluno"];
                    if (!aluno.Administrador)
                        Util.showMessage(this, "Apenas Administradores podem entrar nessa página", "../Default.aspx");
                    else
                    {
                        if (String.IsNullOrEmpty(Request.QueryString["codigo"]))
                            Util.showMessage(this, "Código inválido", "../Default.aspx");
                        else
                            CarregarCurso();
                    }
                }
            }
        }

        private void CarregarCurso()
        {
            int codigo = Convert.ToInt32(Request.QueryString["codigo"]);
            using (DCCursoDataContext banco = new DCCursoDataContext())
            {
                DECurso curso = banco.DECursos.SingleOrDefault(q => q.Codigo == codigo);

                if (curso == null)
                    Util.showMessage(this, "Curso não encontrado", "../Default.aspx");
                else
                {
                    this.lblCurso.Text = curso.DETipoCurso.Nome;
                    this.lblInicio.Text = curso.InicioShort;
                    this.lblFim.Text = curso.FimShort;
                    this.lblDias.Text = curso.DECursoHorario.Dias + " das " + curso.DECursoHorario.HoraInicial + " às " + curso.DECursoHorario.HoraFinal;
                }
            }
        }

        protected void btnAdicionar_Click(object sender, EventArgs e)
        {
            try
            {
                if (!Util.verificarAdministrador(this.Context))
                    Util.showMessage(this, "Apenas administradores podem cadastrar calendário", "../Default.aspx");
                else
                {
                    if (String.IsNullOrEmpty(Request.QueryString["codigo"]))
                        Util.showMessage(this, "Código inválido", "../Default.aspx");
                    else
                    {
                        int codigo = Convert.ToInt32(Request.QueryString["codigo"]);
                        using (DCCursoDataContext banco = new DCCursoDataContext())
                        {
                            DECalendario calendario = banco.DECalendarios.FirstOrDefault(q => q.CodigoCurso == codigo);
                            if (calendario == null)
                            {
                                calendario = new DECalendario();
                                calendario.CodigoCurso = codigo;
                                banco.DECalendarios.InsertOnSubmit(calendario);
                                banco.SubmitChanges();
                            }

                            DECalendarioDia calendarioDia = new DECalendarioDia();
                            calendarioDia.CodigoCalendario = calendario.Codigo;
                            calendarioDia.Data = new DateTime(DateTime.Today.Year, Convert.ToInt32(txtDiaMes.Text.Substring(3,2)), Convert.ToInt32(txtDiaMes.Text.Substring(0,2)));

                            if (banco.DECalendarioDias.Any(q => q.CodigoCalendario == calendario.Codigo))
                                calendarioDia.Numero = banco.DECalendarioDias.Where(q => q.CodigoCalendario == calendario.Codigo).Max(q => q.Numero) + 1;
                            else
                                calendarioDia.Numero = 1;

                            calendarioDia.Previsto = txtDescricao.Text;

                            banco.DECalendarioDias.InsertOnSubmit(calendarioDia);
                            banco.SubmitChanges();
                        }

                        txtDiaMes.Text = String.Empty;
                        txtDescricao.Text = String.Empty;

                        Util.showMessage(this, "Dia cadastrado com sucesso");
                    }
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um erro ao cadastrar o dia do calendário");
            }
        }
    }
}